<template>
  <!-- Excel 导入功能组件 -->
  <upload-excel :on-success="handleSuccess" />
</template>

<script>
import { formatExcelDate } from '@/utils/index'
import { importEmployeeAPI } from '@/api/employees'
export default {
  name: 'Excel',
  methods: {
    // 导入成功以后的回调函数
    // 函数形参的解构赋值（把原本对象里属性值直接赋予给key名对应的2个变量上）
    async handleSuccess({ results, header }) {
      // 1.准备映射的数据对象关系
      const obj = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime',
        聘用形式: 'formOfEmployment'
      }
      // 2.遍历读出来results数组,拿到每个中文key的对象
      const newArr = results.map(item => {
        // 3.拿到对象的每个中文key(for...in 或者用Object.keys())
        // Object.keys(item) // 原地返回信的数组 [入职日期，姓名，工号，手机号，转正日期]
        const zhKeyArr = Object.keys(item)
        // 4.遍历中文key字符串，每个出来，去obj对象换取英文的key名
        const newObj = {} // 右侧的空对象
        zhKeyArr.forEach(zhKey => {
          const enKey = obj[zhKey]
          // 5.自己拼接一个对象
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            newObj[enKey] = formatExcelDate(item[zhKey])
          } else {
            newObj[enKey] = item[zhKey] // newObj[enKey] 设置名字 item[zhKey] 设置内容
          }
        })
        // 6.遍历结束以后，把item对象里值，都赋予给了新对象里
        // 7.把外面forEach换成map,收集每次映射好的新对象，形成一个大数组
        return newObj // 返回转化好的数组
      })
      const res = await importEmployeeAPI(newArr)
      console.log(res)
      // console.log(results, header)
      // console.log(newArr) // 输出转化好的数组测试
      // xlsx，读取表格里日期的时候，会按照1900年01月01日进行天数的计算，返回天数数字
      // 40000多天，是1900年(当时的UTC时间算)->2019年过的天数(了解:在标准的0时上多加了8小时5分43秒)-在1900年的时候，时间时UTC+8：5：43(不是正好的东8区
      // 但是new Date() 是从1970年开始计算时间毫秒，要把天数 -减掉1970-1900年的天数
      // 剩余的天数就是1970年 -> 209年过的天数
    }
  }
}
</script>

<style lang="scss" scoped></style>
